using SG3L_RAG.Domain.Entities;

namespace SG3L_RAG.Application.Interfaces
{
    public interface IStatisticsService
    {
        Task<Statistics?> GetByIdAsync(Guid id);
        Task<IEnumerable<Statistics>> GetAllAsync();
        Task<Statistics> CreateAsync(string statType, int statValue);
        Task UpdateAsync(Statistics statistics);
        Task DeleteAsync(Guid id);
        Task<IEnumerable<Statistics>> GetByTypeAsync(string statType);
        Task<Statistics?> GetLatestByTypeAsync(string statType);
        Task<Statistics> CreateUserCountAsync(int count);
        Task<Statistics> CreateDocumentCountAsync(int count);
        Task<Statistics> CreateConversationCountAsync(int count);
        Task<Statistics> CreateMessageCountAsync(int count);
        Task IncrementStatAsync(string statType);
        Task DecrementStatAsync(string statType);
        Task UpdateStatValueAsync(string statType, int newValue);
    }
}
